界面UI设计

您所在的位置:网站首页 qwidget 右键菜单 界面UI设计

界面UI设计

2023-03-12 23:00| 来源: 网络整理| 查看: 265

本文共 3155 字,大约阅读时间需要 10 分钟。

界面设计分为预览和回放两个模块,本节主要是预览模块。

一、替换系统图标 1. 替换生成程序图标

在这里插入图片描述

2. 替换生成界面图标

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

二、窗口布局 1. 自定义标题栏图像

QWidget来实现自定义标题栏,因为QWidget可以自定义大小。布局器使用代码。

自定义标题栏 在这里插入图片描述 添加组件,并改变样式 在这里插入图片描述 定义标题栏最小化、最大化、关闭功能键 在这里插入图片描述 2. 窗口布局 #include #include /*创建布局器*/auto Vlay = new QVBoxLayout();this.setLayout(Vlay);Vlay->setContentsMargins(0, 0, 0, 0);   //边缘间隔Vlay->setSpacing(0); //内部对象的间隔Vlay->addWidget(ui.head);   //布局器添加布局的对象Vlay->addWidget(ui.body);auto Hlay = new QHBoxLayout;ui.body->setLayout(Hlay);Hlay->addWidget(ui.left);Hlay->addWidget(ui.cams);Hlay->setContentsMargins(0, 0, 0, 0); 三、拖动和缩放 1. 拖动功能

QT自带标题栏是可以实现拖动效果的,但自定义标题栏就需要自己实现拖动效果

static bool MousePress = false;//鼠标是否按下static QPoint MousePoint;//点击的位置void XViewer10::mousePressEvent(QMouseEvent* ev){    MousePress = true;//记录按下的状态MousePoint = ev->pos();//记录鼠标的位置}void XViewer10::mouseReleaseEvent(QMouseEvent* ev){    MousePress = false;//记录鼠标的状态}void XViewer10::mouseMoveEvent(QMouseEvent* ev){    //若鼠标未按下if (!MousePress){    QWidget::mouseMoveEvent(ev);//执行其本来的时间return;}this->move(ev->globalPos() - MousePoint);//当前点击点与窗口初始位置根据相对位置来移动} 2. 最大化和最小化 定义槽函数 //最大化窗口槽函数void XViewer10::MaxWindow(){    ui.max->setVisible(false);  //最大化图标不可见ui.normal->setVisible(true);//普通图标可见this->showMaximized();  //当前窗口最大化}void XViewer10::NormalWindow(){    ui.normal->setVisible(false); ui.max->setVisible(true);  this->showNormal();  } 绑定信号和槽 在这里插入图片描述 四、右键菜单调整预览窗口 1. 右键菜单显示窗口数量 定义右键的菜单,并添加菜单的选项 //定义一个菜单QMenu left_menu;auto m = left_menu.addMenu(C("视图"));//给菜单添加一个菜单auto a = m->addAction(C("1视图"));    //给菜单添加一个选项connect(a, SIGNAL(triggered()), this, SLOT(view1()));//定义点击选项后的槽函数a = m->addAction(C("4视图"));connect(a, SIGNAL(triggered()), this, SLOT(view4()));a = m->addAction(C("9视图"));connect(a, SIGNAL(triggered()), this, SLOT(view9()));a = m->addAction(C("16视图"));connect(a, SIGNAL(triggered()), this, SLOT(view16())); 重载右键的处理事件 //当点击右键后会执行以下处理void XViewer10::contextMenuEvent(QContextMenuEvent* ev){    //将鼠标的位置交给菜单处理,菜单会在鼠标的位置显示出来//菜单具体的处理取决于left_menu内部的实现left_menu.exec(QCurser::pos());ev.accpet();//事件处理结束} 2. 预览窗口的显示 static QWidget *cam_wids[16] = { nullptr };//定义存储窗口的仓库void XViewer10::view(int count){    //初始化布局器auto GLay = ui.cams->layout();if(!GLay){    GLay = new QGridLayout();GLay.setContentMargins(0, 0, 0, 0);GLay.setSpacing(5);ui.cams->setLayout(GLay);}//根据传入的窗口数量添加显示的窗口int col = sqrt(count);//获取列数for(int i = 0; i setStyleSheet("background-color: rgb(0, 0, 0);");}//添加到布局器GLay.addWidget(cam_wids[i], i / col, i % col);}//根据当前的视图数量,清除无效的窗口for(int i = count; i 


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3